<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    div{
      width: 100px;
      height: 100px;
      background-color: darksalmon;
      position: relative;

      opacity: 1;
    }
  </style>
</head>
<body>
  <h1>
    <div id="di1">11</div>
    <div id="di2">11</div>
  </h1>
  <script src="../jquery-1.12.4.min.js"></script>
  <script>
    // 方案1 stop
    // 每次运动开始之前，停止运动
      // 问题：会一直停在当前位置

      // $("#di1").mouseenter(function () {
      //   $("#di2").stop(true).slideUp(1000)
      // })
      // $("#di1").mouseleave(function () {
      //   $("#di2").stop(true).slideDown(1000)
      // })
    // 方案2
    // 每个jq对象 都能调用is（）方法
    // 使用函数节流
      // $("#di1").mouseenter(function () {
      //   // 判断是否在运动中,如果是，那么直接返回，不添加新运动
      //   // 问题：只会判断是否有运动

      //   if ($("#di2").is(":animated")){
      //     return;
      //   }
      //   $("#di2").slideUp(1000)
      // })
      // $("#di1").mouseleave(function () {
      //   if ($("#di2").is(":animated")){
      //     return;
      //   }
      //   $("#di2").slideDown(1000)
      // })
    
    // 优化
    var viup = true
      $("#di1").mouseenter(function () {
        // 判断是否在运动中,如果是，那么直接返回，不添加新运动
        if ($("#di2").is(":animated")){
          return;
        }
        viup = true;
        $("#di2").stop(true).slideUp(1000)
      })
      $("#di1").mouseleave(function () {
        if ($("#di2").is(":animated"&& !viup)){
          return;
        }if (viup) {
          $("#di2").slideDown(1000)
        }
        // else{
        //   $("#di2").stop(true).slideDown(1000)
        // }
        viup = false;

      })
    
  </script>
</body>
</html> 